DataContext
DataContext dovoluje zpřístupnit data určitému elementu. Přesněji řečeno přidá k elementu související data. Takto zpřístupněná data je možné použít pomocí data bindingu. Připojit data k elementu pomocí DataContext je možné vytvořit i v code-behind. Vlastnost DataContext je možné použít u elementu odvozeného od třídy FrameworkElement.
Připojení dat pomocí DataContext k elementům ListBox a Label
Tema wpf = new Tema("Windows Presentation Foundation");
//přidání kapitol k tématu
wpf.Kapitoly.Add("XAML");
wpf.Kapitoly.Add("Data binding");
//přiřazení datového kontextu k elementům ListBox a Label
kapitolyListBox.DataContext = wpf;
temaLabel.DataContext = wpf;
Třída Tema je podobná třídě Skola. Obsahuje kolekci ObservableCollection<string> Kapitoly. Jako prvky této kolekce jsou přidány názvy kapitol.
Po připojení DataContext k elementu není potřeba uvádět u zápisu {Binding} název elementu nebo odkaz na objekt s daty. To platí v rámci elementu a vnořených elementů (potomků elementu).
Data binding u elementu s DataContext
<ListBox x:Name="kapitolyListBox" ItemsSource="{Binding Path=Kapitoly}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
ItemsPanelTemplate – určuje, jakým způsobem budou vizuálně uspořádány prvky v ListBox
V tomto případě budou prvky umístěny do StackPanel s horizontální orientací.
Kapitoly budou pomocí elementu ListBox zobrazeny jako na Obrázku 6.
Obrázek 6 Ukázka z aplikace DataContext [zdroj: vlastní]